package com.competition.web.admin.service;
import java.util.List;

import com.admin.param.contract.IAnchorEnterpriseParam;
import com.admin.param.contract.IDesignatedMegotiatorData;
import com.admin.param.contract.IOrganizeRequestParam;
import com.admin.param.contract.IQueryEligibleEnterprisesRequestParm;
import com.admin.vo.contract.ICompanyInfoVO;
import com.basic.service.contract.IBaseService;
import com.competition.web.entity.VisitCustomer;
import com.page.PageResponseData;
import com.returns.value.ICodeAndData;
import com.unify.type.Department;
import com.unify.type.DepartmentFlatten;

public interface IVisitCustomerService extends IBaseService<VisitCustomer> { 

	/**
	 * 获取组织架构
	 * @return
	 */
	ICodeAndData<DepartmentFlatten[][]> getOrganize(IOrganizeRequestParam organizeRequestParam);
	
	/**
	 * 获取符合条件的公司
	 * @return
	 */
	List<ICompanyInfoVO> getCompanyInfoVOs(String token);
	/**
	 * 获取电邀部门员工
	 * @return
	 */
	List<Department> getInvitationName();
	
	
	/**
	 * 清理 结果缓存
	 * @return
	 */
	void removeCacheResult(String token, int total);
	
	/**
	 * 获取电邀部及加盟事业部下面的二道
	 * @param organizeRequestParam
	 * @return
	 */
	public ICodeAndData<DepartmentFlatten[][]> getDesignatedNegotiatorAndInvitationDepartment(
			IOrganizeRequestParam organizeRequestParam,
			String token
		);
	
	/**
	 * 获取公司信息
	 * @param <VO>
	 * @param time 锚点企业到各个公司的时间
	 * @param enterprisesRequestParm
	 * @return
	 */
	<VO extends ICompanyInfoVO, P extends IDesignatedMegotiatorData> PageResponseData<VO> companyListForSearch(
			IQueryEligibleEnterprisesRequestParm<P> enterprisesRequestParm,
			Class<VO> targert,
			String token,
			Integer time
	);
	
	/**
	 * 获取锚点企业信息
	 * @param anchorEnterpriseParam
	 * @param token
	 * @return
	 */
	 ICodeAndData<ICompanyInfoVO> getnnchorEnterpriseCompanyInfoVO(IAnchorEnterpriseParam anchorEnterpriseParam, String token);
	 
	 
	
	
}